﻿#define _CRT_SECURE_NO_WARNINGS 1


#include<stdio.h>

//int Fact(int n) {
//	if (n == 0) {
//		return 1;
//	}
//	else {
//		return n*Fact(n - 1);
//	}
//}
//int main() {
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Fact(n);
//
//	printf("%d", ret);
//
//	return 0;
//}


//举例2：顺序打印⼀个整数的每⼀位

//void Print(int m ) {
//
//	if (m > 9) {
//		Print(m / 10);
//	}
//	printf("%d ", m % 10);
//}

//int main() {
//	//输⼊⼀个整数m，打印这个按照顺序打印整数的每⼀位。
//	/*
//	输⼊：1234 输出：1 2 3 4
//	输⼊：520 输出：5 2 0
//	*/
//	//  判断这个数是否大于等于二位数   
//	int m = 0;
//	scanf("%d", &m);
//
//	Print(m);
//
//	return 0;
//}


//举例3：求第n个斐波那契数
/*
	 我们很容易就能发现，在递归的过程中会有重复计
	算，⽽且递归层次越深，冗余计算就会越多
	*/
//int count = 0;
//int Fib(int n) {
//	if (n == 3) {
//		count++; // 统计第三个斐波那契数列被计算机的次数
//	}
//	if (n <= 2) 
//		return 1;
//	else {
//		return Fib(n - 1) + Fib(n - 2);
//	}
//}
//
//int main() {
//	int n = 0;
//	scanf("%d", &n);
//	int ret =Fib(n);
//	printf("%d\n", ret);
//	printf("\ncount = %d\n", count);
//	return 0;
//}



// 正常的求解

//int Fib(int n) {
//
//	int a = 1;
//	int b = 1;
//	int c = 0;
//	// 1 1 2 3 5
//	while (n > 2) {
//		c = a + b;
//		a = b;
//		b = c;
//		n--;
//	}
//	return c;
//}
//
//int main() {
//	int n = 0;
//	scanf("%d", &n);
//	int ret =Fib(n);
//	printf("%d\n", ret);
//	return 0;
//}


